/**
 ******************************************************************************
 * @file app_snake_file.h
 * @author GX (2524913364@qq.com)
 * @brief 
 * @version 1.0.0 
 * @date 2022-07-29
 * 
 * @copyright Copyright (c) 2022
 * 
 ******************************************************************************
 *----------------------------------------------------------------------------*
 *  Remark         : Description                                              *
 *----------------------------------------------------------------------------*
 *  Change History :                                                          *
 *  <Date>     | <Version> | <Author>       | <Description>                   *
 *----------------------------------------------------------------------------*
 *  2022-07-29 | 1.0.0     | GX             | Create file                     *
 *----------------------------------------------------------------------------*
 *                                                                            *
 ******************************************************************************
 */


/*----------------------------- start of file -------------------------------*/

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h> 
#include <sys/bitypes.h>
#include <time.h>
#include <linux/fb.h>

/*---------------------- Define parameters and types ------------------------*/
/* 定义常量、变量或者宏定义等等，前缀 “S_” 是表示 “snake” */
/* 游戏介绍界面--------------------------------------- */
#define S_INTRO_PATH  "./data/snake/introduction/intro_1.bmp"

/* 退出保存成绩--------------------------------------- */
/* 询问是否保存成绩的窗口 */
/* 界面窗口 */
#define SI_SAVE_WIDTH       480   /* 界面窗口宽度 */
#define SI_SAVE_HEIGHT      256   /* 界面窗口高度 */
#define SI_SAVE_X_START     160   /* 界面窗口的起始 x 坐标 ((LCD_WIDE-SI_WIDTH)>>1)*/
#define SI_SAVE_Y_START     112   /* 界面窗口的起始 y 坐标 ((LCD_HEIGHT-SI_HEIGHT)>>1)*/
#define SI_SAVE_COLOR       0x00C8C8C8/* 界面窗口颜色 */

/* 显示标题的位置和内容 */
#define SI_SAVE_TITEL       "Save your grades?"
#define SI_SAVE_TITEL_X     184
#define SI_SAVE_TITEL_Y     144

/* 确认键 */
#define SI_YES_X_START      184
#define SI_YES_Y_START      208
#define SI_YES_WIDTH        432
#define SI_YES_HEIGHT       64
#define SI_YES_X_END        (SI_YES_X_START+SI_YES_WIDTH)
#define SI_YES_Y_END        (SI_YES_Y_START+SI_YES_HEIGHT)
#define SI_YES_COLOR        0x73FBFD
#define SI_YES_TXET         "Yes"
#define SI_TES_TXET_X       352
#define SI_TES_TXET_Y       224

/* 取消建 */
#define SI_NO_X_START       184
#define SI_NO_Y_START       272
#define SI_NO_WIDTH         432
#define SI_NO_HEIGHT        64
#define SI_NO_X_END         (SI_NO_X_START+SI_NO_WIDTH)
#define SI_NO_Y_END         (SI_NO_Y_START+SI_NO_HEIGHT)
#define SI_NO_COLOR         0x75163F
#define SI_NO_TEXT          "No"
#define SI_NO_TXET_X        376
#define SI_NO_TXET_Y        288

/* 排行榜界面-------------------------- */
/* 界面大小 */
#define SI_RANK_WIDTH       576
#define SI_RANK_HEIGHT      336
#define SI_RANK_X_START     112
#define SI_RANK_Y_START     72
#define SI_RANK_COLOR       0x00FFFF00

/* 排行版标题 */
#define SI_RANK_TITEL_X     208
#define SI_RANK_TITEL_Y     72
#define SI_RANK_TITEL       "Ranking List"
#define SI_RANK_TITEL_COLOR LCD_PURPLE

#define SI_RANK_LISTHEAD_X  136 
#define SI_RANK_LISTHEAD_Y  132

#define SI_RANK_LIST_X      136
#define SI_RANK_LIST_Y      180

#define SI_RANK_LIST_HEIGHT 48    /* 表格的一行占两倍的字体高度 */

/**
 * @brief   记录玩家属性的结构体
 */
typedef struct SnakePlayer
{
  int8_t  health;             /* 生命值 */
  u_int8_t  name[10];         /* 玩家名字 */
  u_int32_t length;           /* 蛇的长度 */
  int32_t   score;            /* 得分 */
  struct tm datetime;        /* 日期 */
}SnakePlayer_t;

/**
 * @brief   排行榜数据的结构体
 */
typedef struct RankData
{
  int32_t   score;            /* 得分 */
  u_int8_t  name[10];         /* 玩家名字 */
  struct tm datetime;        /* 日期 */
}RankData_t;

#define PLAYER_DATA_LEN   35  /* 一组实际写入文件的玩家数据长度 */

extern u_int8_t player_num;           /* 玩家数 */
extern SnakePlayer_t       player[1];


void snake_intro_interface (int *fb_base, int fd, struct fb_var_screeninfo *vinfo);
void snake_save_interface (int *fb_base, int fd, struct fb_var_screeninfo *vinfo);
void snake_rank_interface (int *fb_base, int fd, struct fb_var_screeninfo *vinfo);
/*------------------------------ end of file --------------------------------*/

